home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group96a.txt / 000036_icon-group-sender _Mon Feb 5 13:09:31 1996.msg < prev    next >
Internet Message Format  |  1996-09-05  |  18KB

  1. Received: by cheltenham.cs.arizona.edu; Mon, 5 Feb 1996 16:57:34 MST
  2. To: icon-group@cs.arizona.edu
  3. Date: 5 Feb 1996 13:09:31 -0700
  4. From: icon-project@cs.arizona.edu
  5. Message-Id: <4f5o5r$b3n@cheltenham.cs.arizona.edu>
  6. Organization: University of Arizona CS Department, Tucson AZ
  7. Sender: icon-group-request@cs.arizona.edu
  8. Reply-To: icon-project@cs.arizona.edu
  9. Subject: Icon Programming Language FAQ
  10. Errors-To: icon-group-errors@cs.arizona.edu
  11. Status: O
  12.  
  13. Archive-name: comp-lang-icon-faq
  14. Posting-Frequency: monthly
  15.  
  16. Frequently Asked Questions About The Icon Programming Language
  17. Last updated: January 8, 1995
  18.  
  19. This FAQ answers various questions about the Icon programming language,
  20. ranging from what it is to how you can get it. The master copy of this FAQ
  21. is the Web page http://www.cs.arizona.edu/icon/www/faq.html. Other on-line
  22. documentation is available via the main Icon page at
  23. http://www.cs.arizona.edu/icon/www/.
  24.  
  25. This FAQ is written by Ralph Griswold and Gregg Townsend, with help from
  26. Cliff Hathaway, Clint Jeffery, and Bob Alexander.
  27.  
  28.    * 1. What is Icon?
  29.    * 2. What is Icon good for?
  30.    * 3. Where did Icon come from?
  31.    * 4. What does "Icon" stand for?
  32.    * 5. On what computers does Icon run?
  33.    * 6. Who did all these implementations?
  34.    * 7. Are there other implementations in the works?
  35.    * 8. What about different versions of Icon?
  36.    * 9. Which implementations of Icon have graphics/window capabilities?
  37.    * 10. Where can I get Icon?
  38.    * 11. Where can I get documentation about Icon?
  39.    * 12. How do I get started with Icon?
  40.    * 13. What is the Icon Project?
  41.    * 14. Where can I find examples of Icon programs?
  42.    * 15. What is Idol?
  43.    * 16. How often is material in Icon's FTP area updated?
  44.    * 17. How do I stay up to date with what's going on with Icon?
  45.    * 18. Is there a users' group for Icon?
  46.    * 19. How do I get technical support?
  47.    * 20. Should I use the Icon interpreter or compiler?
  48.    * 21. What do I need to run the interpreter?
  49.    * 22. What do I need to run the compiler?
  50.    * 23. Can I build my own implementation of Icon for a new platform?
  51.  
  52. ----------------------------------------------------------------------------
  53.  
  54.  
  55. 1. What is Icon?
  56.  
  57. Icon is a very high level general-purpose programming language with
  58. extensive features for processing strings (text) and data structures. Icon
  59. is an imperative, procedural language with a syntax that is reminiscent of C
  60. and Pascal, but its semantics are at a much higher level than those
  61. languages.
  62.  
  63. Icon has a novel expression-evaluation mechanism that integrates
  64. goal-directed evaluation and backtracking with conventional control
  65. structures. It has a string scanning facility for pattern matching that
  66. avoids the tedious details usually associated with analyzing strings. Icon's
  67. built-in data structures include sets and tables with associative lookup,
  68. lists that can be used as vectors or stacks and queues, and records.
  69.  
  70. Icon is a strongly, though not statically, typed language. It provides
  71. transparent automatic type conversion. For example, if an integer is used in
  72. an operation that requires a string, the integer is automatically converted
  73. to a string.
  74.  
  75. Several implementations of Icon have high-level graphics facilities with an
  76. easily programmed window interface.
  77.  
  78. Icon manages storage automatically. Objects are created as needed during
  79. program execution and space is reclaimed by garbage collection as needed.
  80. The sizes of strings and data structures are limited only by the amount of
  81. available memory.
  82.  
  83.  
  84. 2. What is Icon good for?
  85.  
  86. As a general-purpose programming language with a large computational
  87. repertoire, Icon can be used for most programming tasks. It's at its best
  88. when used as a prototyping tool, for processing text, and when ease of
  89. programming is needed for experimental and research applications.
  90.  
  91. Paradoxically, Icon is used most often for short, one-shot tasks and for
  92. very complex applications.
  93.  
  94. Icon is designed to make programming easy; it emphasizes the value of
  95. programmer's time and the importance of getting programs to work quickly.
  96. This explains its usefulness for prototyping as well as the apparent paradox
  97. of applicability to simple and complex applications.
  98.  
  99.  
  100. 3. Where did Icon come from?
  101.  
  102. Icon is the latest in a series of high-level programming languages designed
  103. to facilitate programming tasks involving strings and structures. The
  104. original language, SNOBOL, was developed at Bell Telephone Laboratories in
  105. the early 60s. SNOBOL evolved into SNOBOL4, which is still in use.
  106. Subsequent languages were developed at The University of Arizona with
  107. support from the National Science Foundation.
  108.  
  109. Incidentally, Icon bears little physical resemblance to SNOBOL4, although it
  110. has similar objectives and many similar capabilities.
  111.  
  112.  
  113. 4. What does "Icon" stand for?
  114.  
  115. The name Icon (which is not spelled ICON) is not an acronym nor does it
  116. stand for anything in particular, although the word "iconoclastic" was
  117. mentioned at the time the name was chosen. The name predates the now common
  118. use of "icon" to refer to small images used in graphical user interfaces.
  119. This latter usage sometimes causes persons to think mistakenly that Icon is
  120. designed to create or manipulate icons. There's not much that can be done
  121. about this.
  122.  
  123.  
  124. 5. On what computers does Icon run?
  125.  
  126. The implementation of Icon is highly portable. Version 9 runs on UNIX,
  127. MS-DOS, Macintosh/MPW, VAX/VMS, and the Acorn Archimedes. There are older
  128. versions for the Amiga, the Atari ST, IBM CMS and MVS, and OS/2.
  129.  
  130. Icon programs also are highly portable. Most Icon programs can run on any
  131. platform that supports Icon.
  132.  
  133.  
  134. 6. Who did all these implementations?
  135.  
  136. The original implementation of Icon for UNIX was done at The University of
  137. Arizona. Most of the other implementations originally were done by
  138. volunteers scattered around the world.
  139.  
  140. It's worth noting that all implementations of Icon are based on the same
  141. source code, which is written in C. This contributes to the portability of
  142. Icon itself, as well as to the portability of programs written in Icon.
  143.  
  144.  
  145. 7. Are there other implementations in the works?
  146.  
  147. Yes, work is constantly underway on implementations of Icon for new
  148. platforms. Present projects include Microsoft Windows, Windows NT, and a new
  149. Macintosh implementation.
  150.  
  151.  
  152. 8. What about different versions of Icon?
  153.  
  154. Icon has evolved through a series of versions with improved and extended
  155. capabilities. The latest major version number is 9. This version includes
  156. recent changes and additions, notably in the graphics area, and runs on
  157. UNIX, MS-DOS, Macintosh/MPW, VAX/VMS, and Acorn Archimedes. Other
  158. implementations presently are at Version 8. Almost all programs that run
  159. under Version 8 and that do not use graphics will run under Version 9.
  160.  
  161.  
  162. 9. Which implementations of Icon have graphics/window capabilities?
  163.  
  164. Icon's graphics facilities presently are supported on UNIX and VAX/VMS. The
  165. Windows NT and Microsoft Windows implementations that are in progress will
  166. support Icon's graphics facilities. A Macintosh implementation to support
  167. graphics also is in the works.
  168.  
  169.  
  170. 10. Where can I get Icon?
  171.  
  172. Icon is available via anonymous FTP and on the Web. For FTP, use
  173.  
  174.      ftp.cs.arizona.edu
  175.  
  176. and cd /icon.
  177.  
  178. For the Web, use
  179.  
  180.      http://www.cs.arizona.edu/icon/www/
  181.  
  182. and check out the links there.
  183.  
  184. For FTP, the directory /icon/binaries contains executable versions of Icon
  185. for several systems, including several popular UNIX platforms. The directory
  186. /icon/packages contains source code, test programs, related material, and,
  187. most cases, executable binaries as well. All directories have README files
  188. with additional information.
  189.  
  190. Icon also is available on diskettes for prices ranging from $15 to $25.
  191. Contact:
  192.  
  193.      Icon Project
  194.      Department of Computer Science
  195.      The University of Arizona
  196.      P.O. Box 210077
  197.      Tucson, AZ 85721-0077
  198.  
  199.      520-621-6613 (voice)
  200.      520-621-4246 (fax)
  201.  
  202.      icon-orders@cs.arizona.edu
  203.  
  204. Purchases can be made by credit card (MasterCard or Visa) or by check drawn
  205. on a bank with a branch in the United States and made payable to The
  206. University of Arizona.
  207.  
  208. Icon is available on CD-ROM from Prime Time Freeware (http://www.ptf.com/,
  209. 408-433-9662). Contact them for details.
  210.  
  211.  
  212. 11. Where can I get documentation about Icon?
  213.  
  214. The definitive work on Icon is the book
  215.  
  216.      The Icon Programming Language, Griswold and Griswold,
  217.      Prentice-Hall, 1990, 368 pages, ISBN 0-13-447889-4.
  218.  
  219. This book is a complete description and reference manual for Version 8 of
  220. Icon. A technical report describes changes since that version.
  221.  
  222. There also is a book on the implementation of Icon:
  223.  
  224.      The Implementation of the Icon Programming Language, Griswold and
  225.      Griswold, Princeton University Press, 1986, 336 pages, ISBN
  226.      0-691-08431-9.
  227.  
  228. This book describes the implementation as of Version 6 of Icon. Although the
  229. implementation has changed considerably since then, the basic structure is
  230. the same. Technical reports describing recent implementation changes are
  231. included with copies of the book purchased from the Icon Project.
  232.  
  233. These books are available from the Icon Project or from book stores that
  234. handle special orders.
  235.  
  236. Additional documentation is available via FTP in /icon/doc. Notable
  237. documents are:
  238.  
  239.    * IPD266: An Overview of Icon (text, PostScript, PDF)
  240.    * IPD268: Graphics/window facilities (PostScript, PDF)
  241.    * IPD267: Version 9.1 of Icon (text, PostScript, PDF)
  242.  
  243. There are manual pages for UNIX systems, and more documentation under the
  244. Icon web page, but there is no complete on-line documentation.
  245.  
  246. The Icon Newsletter, which includes topical material about Icon and a list
  247. of material available from the Icon Project, is published three times a year
  248. and is available on the Web. There is a $20 one-time fee for an on-going
  249. subscription by postal mail. The Icon Analyst, a technically-oriented
  250. newsletter that features articles about programming, is published six times
  251. a year. There is a subscription fee for the Analyst. A sample copy is
  252. available on the Web.
  253.  
  254. All back issues of both newsletters are available for purchase.
  255.  
  256.  
  257. 12. How do I get started with Icon?
  258.  
  259. If you're running under Unix, check first in the /icon/binaries/unix FTP
  260. directory to see if there is a "starter kit" for your platform. Starter kits
  261. include executables, documentation, and other material.
  262.  
  263. Otherwise, go to the /icon/packages directory and get the appropriate
  264. package. Packages include documentation and other material; see the README
  265. file in that directory for more details. There is a Unix package for
  266. platforms that lack starter kits.
  267.  
  268. If the non-Unix package you pick up does not contain executable files, check
  269. /icon/binaries. You also may want to get the overview of Icon:
  270. /icon/doc/ipd266.doc or ipd266.ps.Z. You'll find pointers to other documents
  271. of interest in the package you pick up.
  272.  
  273.  
  274. 13. What is the Icon Project?
  275.  
  276. The Icon Project is a name used by the group that develops, implements,
  277. distributes, and supports the Icon programming language.
  278.  
  279. The Icon Project is not commercial organization. It derives support from The
  280. University of Arizona and (primarily) revenue from the sale of program
  281. material and documentation.
  282.  
  283.  
  284. 14. Where can I find examples of Icon programs?
  285.  
  286. There is a large program library for Icon. It is an excellent resource for
  287. both new and experienced programmers. The library contains numerous examples
  288. of how to do things with Icon. The library also provides many useful
  289. applications, as well as hundreds of procedures that supplement Icon's
  290. built-in repertoire.
  291.  
  292. The library, like other Icon material, is available via FTP in /icon/library
  293. and on diskettes from the Icon Project.
  294.  
  295.  
  296. 15. What is Idol?
  297.  
  298. Idol is an object-oriented extension to Icon that provides concepts such as
  299. classes and multiple inheritance. Idol is written in Idol and is distributed
  300. as part of the Icon program library. Idol runs on almost all of the
  301. platforms that support Icon.
  302.  
  303. Additional Idol information is available from Clint Jeffery,
  304.  
  305.      jeffery@ringer.cs.utsa.edu.
  306.  
  307.  
  308. 16. How often is material in Icon's FTP area updated?
  309.  
  310. New material is added when it's available. Established implementations
  311. usually are only updated when there's a major new release. This typically is
  312. every year or two. The Icon program library is updated on a similar
  313. schedule.
  314.  
  315.  
  316. 17. How do I stay up to date with what's going on with Icon?
  317.  
  318. The best way to find out about developments related to Icon is to read the
  319. Icon Newsletter.
  320.  
  321. You can stay up to date on the source code, which is changed much more
  322. frequently than the version on FTP is updated, by subscribing to the source
  323. update service, which provides a new version about three times a year.
  324.  
  325. There also is a subscription service for updates to the Icon program
  326. library, which provides new material about three times a year.
  327.  
  328. There is on-line information about subscribing to these services.
  329.  
  330.  
  331. 18. Is there a users' group for Icon?
  332.  
  333. There is no official Icon users' group. The Icon Project maintains an
  334. electronic mailing list,
  335.  
  336.      icon-group@cs.arizona.edu.
  337.  
  338. Mail sent to this address is forwarded to subscribers. To subscribe (or
  339. unsubscribe), send a message to
  340.  
  341.      icon-group-request@cs.arizona.edu.
  342.  
  343. There is a gateway between icon-group and comp.lang.icon, an unmoderated
  344. newsgroup for discussing issues related to Icon. The gateway, which
  345. exchanges messages between the two systems, is imperfect and not under the
  346. control of the Icon Project.
  347.  
  348. The newsgroup generally provides faster response than the mailing list, is
  349. less intrusive, but sometimes suffers from inappropriate postings. The Icon
  350. Project usually sends messages of interest to the Icon community to
  351. icon-group.
  352.  
  353.  
  354. 19. How do I get technical support?
  355.  
  356. Since the Icon Project is not a commercial organization, its capacity for
  357. providing technical support is limited. It will help if you use the
  358. appropriate resource when you need assistance:
  359.  
  360. Ordering Icon Material
  361.  
  362. mail:   Icon Project
  363.         Department of Computer Science
  364.         The University of Arizona
  365.         P.O. Box 210077
  366.         Tucson, Arizona 85721-0077
  367.         U.S.A.
  368.  
  369. fax:    (520) 621-4246
  370. voice:  (520) 621-6613
  371. e-mail: icon-orders@cs.arizona.edu
  372.  
  373. Getting On-Line Information and Material
  374.  
  375. web:    http://www.cs.arizona.edu/icon/www/
  376. ftp:    ftp.cs.arizona.edu (cd /icon)
  377. e-mail: ftpmail@cs.arizona.edu
  378.         Send a message consisting of the word help.
  379.  
  380. Assistance with Installing Icon
  381.  
  382. e-mail: icon-project@cs.arizona.edu
  383.  
  384. Bug Reports
  385.  
  386. e-mail: icon-project@cs.arizona.edu
  387. fax:    (520) 621-4246
  388.  
  389. Assistance with Programming Problems
  390.  
  391. e-mail: icon-group@cs.arizona.edu
  392. news:   comp.lang.icon
  393.  
  394. Uploading Files
  395.  
  396. ftp:    ftp.cs.arizona.edu (cd /incoming)
  397.         After uploading, send e-mail to icon-project@cs.arizona.edu.
  398.  
  399.  
  400. 20. Should I use the Icon interpreter or compiler?
  401.  
  402. As the question indicates, there are two forms of the implementation of
  403. Icon, an interpreter and a compiler. The interpreter gets a program into
  404. execution quickly and is recommended for program development, debugging, and
  405. most production situations. The compiler produces code that executes
  406. somewhat faster than interpreted code (a factor of 2 or 3 is typical), but
  407. the compiler requires a large amount of resources and is very slow in
  408. producing executable code. It also requires additional time and effort at
  409. installation time.
  410.  
  411. The compiler is recommended only for small programs where execution speed is
  412. the paramount concern.
  413.  
  414.  
  415. 21. What do I need to run the interpreter?
  416.  
  417. The Icon interpreter will run on most computers. It requires a reasonable
  418. amount of memory, however. Under MS-DOS, the Icon interpreter needs 500 KB
  419. of application RAM to work well.
  420.  
  421.  
  422. 22. What do I need to run the compiler?
  423.  
  424. The Icon compiler is another matter. It requires a C compiler, a fast CPU
  425. for tolerable compilation times, a considerable amount of disk space, and a
  426. lot of memory -- at least several megabytes.
  427.  
  428. The Icon compiler generates C code, which must then be compiled to produce
  429. an executable program. The flexibility that Icon provides to programmers
  430. makes compilation technically difficult and the process requires a large
  431. amount of memory. The C code it produces is voluminous and stresses the most
  432. robust C compilers.
  433.  
  434. Generally speaking, the Icon compiler is practical for platforms in the
  435. workstation class but not for personal computers.
  436.  
  437.  
  438. 23. Can I build my own implementation of Icon for a new platform?
  439.  
  440. As mentioned above, Icon is written in C and the source code is available.
  441. The existing implementations are testament to its portability. (A small
  442. amount of assembly-language code is required for a context switch, but this
  443. is only needed for an optional feature -- co-expressions -- that can be
  444. disabled without affecting most of Icon.)
  445.  
  446. New ports involve platform-specific configuration parameters and, in some
  447. cases, platform-specific code. The feasibility of a new port and the amount
  448. of work it may take depends on the platform -- its architecture, its C
  449. compiler, and its environment.
  450.  
  451. Ports to new UNIX platforms generally are easy, although novel architectures
  452. may present problems. Ports to new operating systems generally are more
  453. difficult, especially if Icon's graphics facilities are implemented.
  454.  
  455. The Icon Project provides what help it can with new ports. In return, it
  456. asks that code related to the port to be returned to the Icon Project for
  457. inclusion in future versions of the source code for Icon. This makes the new
  458. port available to others as well as to the porter when Icon is updated.
  459.